import _ from "lodash";
// 使用深拷贝复制组件
var cloneCmpnt = function (cmpt, showName) {
  let ncmpnt = _.cloneDeep(cmpt); // 使用深拷贝
  addUniqueId(ncmpnt);
  if (!showName) {
    return ncmpnt;
  }
  if (ncmpnt.props.value) ncmpnt.props.value = showName;
  else if (ncmpnt.props.label) ncmpnt.props.label = showName;
  ncmpnt._name = showName;

  return ncmpnt;
};

// 为组件添加编程属性
var addUniqueId = function (xobj) {
  let setUniqueId = (obj) => {
    if (!obj) return;
    obj["_id"] = _.uniqueId("1000");
    if (obj.slots) {
      Object.keys(obj.slots).forEach((key) => {
        if (_.isArray(obj.slots[key])) {
          obj.slots[key].forEach((slot) => {
            setUniqueId(slot);
          });
        }
      });
    }
    if (Array.isArray(obj.children) && obj.children.length > 0) {
      obj.children.forEach((child) => {
        setUniqueId(child);
      });
    }
  };
  setUniqueId(xobj);
};
export { cloneCmpnt };
